<div id="contentBox">
  <div class="section">
    <h2>Conventions</h2>
    <p>The following sections describe the conventions used within NPanday itself. This section is useful for
      developers wishing to contribute to NPanday, as well as developers looking for a baseline for their own
      projects. These conventions are evolving and subject to change as better ideas emerge:
      <a href="mailto:npanday-dev@incubator.apache.org">Got better ideas?</a>
    </p>
    <ul>
      <li>Artifact ID - specified within the pom - is equivalent to the project's module name.
        <div class="source">
            <pre> |-- <font size = "+1"><b>NPanday.Artifact</b></font>
 |   `-- main
 |       `-- csharp
 |           `-- NPanday
 |               `-- Artifact
 |                   `-- ArtifactContext.cs
 |                   `-- Artifact.cs
  `-- pom.xml
</pre>
        </div>
        <div class="source">
<pre>&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;NPanday.Artifact&lt;/groupId&gt;
  &lt;artifactId&gt;<font size = "+1"><b>NPanday.Artifact</b></font>&lt;artifactId&gt;
  &lt;packaging&gt;library&lt;/packaging&gt;
  &lt;version&gt;0.14&lt;/version&gt;
  &lt;name&gt;NPanday.Artifact&lt;/name&gt;
&lt;/project&gt;
</pre>
        </div>
      </li>


      <li>If the module does not contain children modules, the Group ID is the same as the artifact ID.</li>
        <div class="source">
<pre>&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;<font size = "+1"><b>NPanday.Artifact</b></font>&lt;/groupId&gt;
  &lt;artifactId&gt;<font size = "+1"><b>NPanday.Artifact</b></font>&lt;artifactId&gt;
  &lt;packaging&gt;library&lt;/packaging&gt;
  &lt;version&gt;0.14&lt;/version&gt;
  &lt;name&gt;NPanday.Artifact&lt;/name&gt;
&lt;/project&gt;
</pre>
        </div>


      <li>If a module contains children modules, the child module Group ID should either be equivalent to a pluralized
        parent module Group ID or be a deriviative of the parent module Group ID.</li>
      <pre>
    parent Group ID: NPanday.Model
    child Group ID: NPanday.Model, NPanday.Models or NPanday.Model.VSContent
      </pre>



      <li>The directory structure of the source directory (typically src/main/csharp) will follow the same pattern
        as the artifact ID.</li>
        <div class="source">
            <pre> |-- NPanday.Artifact
 |   `-- main
 |       `-- csharp
 |           `-- <font size = "+1"><b>NPanday</b></font>
 |               `-- <font size = "+1"><b>Artifact</b></font>
 |                   `-- ArtifactContext.cs
 |                   `-- Artifact.cs
  `-- pom.xml
</pre>
        </div>
        <div class="source">
<pre>&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;NPanday.Artifact&lt;/groupId&gt;
  &lt;artifactId&gt;<font size = "+1"><b>NPanday.Artifact</b></font>&lt;artifactId&gt;
  &lt;packaging&gt;library&lt;/packaging&gt;
  &lt;version&gt;0.14&lt;/version&gt;
  &lt;name&gt;NPanday.Artifact&lt;/name&gt;
&lt;/project&gt;
</pre>
        </div>


      <li>If an assembly will only compile under a specific platform, those values should be specified within the
        compiler-config.<div class="source"><pre>
 &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;npanday.plugin&lt;/groupId&gt;
  &lt;artifactId&gt;npanday.plugin&lt;/artifactId&gt;
  &lt;packaging&gt;pom&lt;/packaging&gt;
  &lt;version&gt;0.14&lt;/version&gt;
  &lt;name&gt;npanday.plugin&lt;/name&gt;
  &lt;build&gt;
    &lt;sourceDirectory&gt;src/main/csharp&lt;/sourceDirectory&gt;
    &lt;testSourceDirectory&gt;src/test/csharp&lt;/testSourceDirectory&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;npanday.plugin&lt;/groupId&gt;
        &lt;artifactId&gt;maven-compile-plugin&lt;/artifactId&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;configuration&gt;
          &lt;vendor&gt;<font size = "+1"><b>MONO</b></font>&lt;/vendor&gt;
          &lt;frameworkVersion&gt;<font size = "+1"><b>2.0.50727</b></font>&lt;/frameworkVersion&gt;
          &lt;vendorVersion&gt;<font size = "+1"><b>1.2.3.1</b></font>&lt;/vendorVersion&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;
</pre></div></li>



      <li>Use the default setup within the npanday-settings.xml is to configure cross-platform builds.</li>
    </ul>
  </div>
</div>
